package com.example.demo.study.lambda;

import java.util.function.Consumer;

/**
 * Consumer接口接收一个任意范型的值，和Function接口不同的是该接口没有任何值
 *
 * 总结:
 *         Function<T, R>  接口   R apply(T t);       有参数有返回值
 *         Supplier<T>       接口   T get();          没参数有返回值
 *         Consumer<T>    接口   void accept(T t); 有参数没返回值
 *
 *         另外需要注意的接口: 其用法和上面介绍的接口使用方式类同
 *         BinaryOperator<T>接口    T apply(T t, T t)  将两个T作为输入，返回一个T作为输出
 *         BiFunction<T, U, R>接口  R apply(T t, U u)  将一个T和一个U输入，返回一个R作为输出
 *         BinaryOperator接口继承了BiFunction接口
 *         public interface BinaryOperator<T> extends BiFunction<T,T,T>
 *
 *         BiConsumer<T, U>接口  void accept(T t, U u) 将俩个参数传入，没有返回值
 */
public class LambdaConsumer {

    //静态内部类
    private static class Student{
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

    public static void main(String[] args) {
        Student st = new Student();
        st.setName("tom");
        Consumer<Student> c = stu -> System.out.println("hello " + stu.getName());
        c.accept(st);
    }
}
